草庐IT

Java for 循环性能

全部标签

c# - 'foreach' 循环的幕后发生了什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:HowdoforeachloopsworkinC#?我一直在互联网上搜索,但我无法找到关于C#中的foreach循环幕后真正发生的事情的任何答案。我知道这个问题与实际编码无关,但它困扰着我。我对OO编程特别是接口(interface)很陌生。我了解它们是契约(Contract),并且我了解IEnumerable和IEnumerator的工作原理-我认为是这样。我一直在MSDN上阅读这篇文章:IEnumerableInterface我了解一切是如何设置的。虽然在Main循环中我有点不清楚foreach如何知道遍

c# - 在 WPF 中循环遍历 StackPanel 子项

我有一个充满控件的StackPanel,我试图遍历元素并获取它们的名称,但似乎我需要将每个元素转换为它的类型才能访问它的Name属性。但是如果我在StackPanel中有很多不同的类型并且我只想获取元素名称怎么办?有更好的方法吗?这是我尝试过的:foreach(objectchildintab.Children){UnregisterName(child.Name);} 最佳答案 转换到正确的基类应该就足够了。从FrameworkElement派生的所有内容都有一个Name属性。foreach(objectchildintab.Ch

c# - 在循环内部/外部声明变量会改变性能吗?

这是:foreach(TypeiteminmyCollection){StringBuildersb=newStringBuilder();}远低于:StringBuildersb=newStringBuilder();foreach(TypeiteminmyCollection){sb=newStringBuilder();}换句话说,我在哪里声明我的StringBuilder真的很重要吗? 最佳答案 不,在何处声明它在性能方面并不重要。对于一般的代码清洁度,您应该在使用它的最内层范围内声明它-即。你的第一个例子。

c# - 为什么要将 try/catch block 置于循环之外?

这是Practice&Patterns团队的CodeReview指南。http://msdn.microsoft.com/zh-cn/library/ms998574#scalenetchapt13_topic7(链接会自动导航到异常部分。)他们说在处理异常时应该将try/catchblock放在循环之外,我想知道为什么? 最佳答案 因为try...catchblock的底层实现增加了生成代码的开销,并且将这些开销放在紧密循环中从性能角度来看并不是一个好主意。从技术上讲,如果循环的所有迭代都是“相等的”,并且一旦发生异常循环应该立即

c# - 每 8 天在 Hangfire 中执行一个循环作业

是否可以在Hangfire中创建一个在给定天数后执行的循环作业,比如8。我发现最接近的是每周执行一次工作-RecurringJob.AddOrUpdate("MyJob",()=>ScheduledJob(),Cron.Weekly());了解到Hangfire也接受标准的CronExpression,我尝试探索这个频率的cron表达式,但找不到适合它的-https://en.wikipedia.org/wiki/Cron一个丑陋的解决方案可能是创建3或4个作业,相应地在每月的某个日期执行一次,但我不想这样做。请提出任何建议。 最佳答案

c# - 性能更好的克隆

我想创建深拷贝方法,我找到了3种方法来执行它1层副本,每个属性11地传递2-使用反射3-使用序列化请问他们中哪一个在性能方面最好 最佳答案 我通过三种方法的比较加上表达式树方法制作了图表。对于大量对象,反射比序列化快5倍,手动代码和表达式树比序列化快20倍。因此,性能最好的是手动代码和表达式树。链接到使用的克隆代码(2.-4.用作扩展方法):Manual:手动编写,无链接。CloningbySerializationCloningbyReflectionCloningbyExpressionTrees

c# - 循环直到 TcpClient 响应完全读取

这个问题在这里已经有了答案:ReceivingdatainTCP(10个答案)关闭2年前。我写了一个简单的TCP客户端和服务器。问题出在客户身上。我在读取来自服务器的整个响应时遇到一些问题。我必须让线程休眠以允许发送所有数据。我试过几次将此代码转换为一个循环,该循环一直运行到服务器完成发送数据。//Init&connecttoclientTcpClientclient=newTcpClient();Console.WriteLine("Connecting.....");client.Connect("192.168.1.160",9988);//Streamstringtoserve

公式中的循环语法

在我的宏中,我想在公式中循环:Range("D4").Formula="=Inputs!D8成功转变为:Fori=1To5Range("D4").Formula="=Inputs!D"&i+7我想为下面的代码做同样的事情:Range("G4").Formula="=IF($C4我试过了Fori=1To5Range("G4").Formula="=IF($C4但是我遇到了一个编译错误:预期:陈述结束。你能协助吗?谢谢!看答案尝试一下,Range("G4").Formula="=IF($C4你缺少一个"和&

c# - 生成随机唯一数字的性能问题

我有一种情况需要创建数以万计的唯一数字。但是这些数字必须是9位数字并且不能包含任何0。我目前的方法是生成9位数字(1-9)并将它们连接在一起,如果该数字不在列表中,则将其添加到其中。例如publicvoidgenerateIdentifiers(intquantity){uniqueIdentifiers=newList(quantity);while(this.uniqueIdentifiers.Count然而,在大约400,000时,这个过程确实变慢了,因为越来越多的生成数字是重复的。我正在寻找一种更有效的方法来执行此过程,我们将不胜感激。编辑:-我正在生成这些-http://ww

c# - 在 C# 中,有没有一种方法可以在不循环的情况下将数组转换为 Stack<T>?

我有以下代码,它为我提供了一个包含路径文件夹层次结构的Stack:varpath=@"C:\Folder1\Folder2\Folder3\Folder4\Folder5\FileName.ext";//Stringarraywithanelementforeachlevelvarfolders=path.Split('\\');varstack=newStack();foreach(varfolderinfolders)stack.Push(folder);varfilename=stack.Pop();//'FileName.ext'varparent=stack.Pop();//